Non-LUT field-programmable gate arrays

ABSTRACT

New logic blocks capable of replacing the use of Look-Up Tables (LUTs) in integrated circuits, such as Field-Programmable Gate Arrays (FPGAs), are disclosed herein. In one embodiment, the new logic block is an AND-Inverter Cone (AIC), which is a binary tree including one or more AND gates with a programmable conditional inversion and a number of intermediary outputs. Compared to LUTs, AICs are richer in terms of input and output bandwidth, because the area of the AICs grows only linearly with the number of inputs. Also, the delay grows only logarithmically with the input count. The new logic blocks can map circuits more efficiently than LUTs, because the AICs are multi-output blocks and can cover more logic depth due to the higher input bandwidth.

FIELD

The disclosure generally relates to integrated circuits. More specifically, the disclosure relates to the implementation of logic in integrated circuits.

BACKGROUND

Field-Programmable Gate Arrays (FPGAs), generally include circuitry that can be configured to behave as different user-defined hardware designs. FPGAs in which K-input Look-Up Tables (LUTs) are used as elementary logic blocks have been used universally since the 1980s. In general, K-input LUTs are generic blocks which can implement particular logic functions of K-inputs. Particular circuitry may be mapped in an FPGA by covering the circuitry with K-input subgraphs, irrespective of the functionality that the circuitry represents.

However, increasing the number of LUT inputs to cover larger parts of a circuit has an exponential cost in the LUT complexity. The area of a LUT generally increases exponentially with the number of inputs to the LUT, which disadvantageously takes up substantial amounts of chip real estate. Also, disadvantageously, the delay introduced by a LUT grows linearly with the number of inputs to the LUT. Thus, LUTs with more than 4-6 inputs are rarely used. Further, because LUTs intrinsically have only one output, internal fan-out of subgraphs can not be performed using LUTs to cover a particular circuitry.

Alternate FPGA structures have been proposed based on logic synthesis capabilities at various times. Such alternate FPGA structures have almost universally been based on addressed programmable AND/OR configurations in the form of small Programmable Array Logics (PALs) to implement sum of products representations and algebraic transformations, for example.

One proposed FPGA structure includes small PAL-like structures, with 7-10 inputs and 10-13 product terms, for example. Such structures have been found to obtain performance gains at the price of an increase in area. Another proposed FPGA structure includes K-input multiple-output PAL-style logic blocks. Such structures have been found to be more area efficient than 4-input LUTs but generally consume an unacceptable amount of static power.

Yet another proposed FPGA structure includes an “extended” logic element with slightly modified K-input LUTs to reduce the tile area needed for a logic block. In one example, the addition of an AND gate on the LUT output produces an extended K-LUT. Implementations of such an extended K-LUT on the area of a K-LUT have provided the performance of a K+1-LUT. Such increased performance could facilitate further advantages such as reduced wire lengths, reduced interconnect capacitance and reduced delay, for example, however disadvantages of LUT structures generally remain.

Reconfigurable logic blocks have been adapted for specific FPGA implementations by adding dedicated logic gates to existing LUTs. Various other application specific FPGA configurations have been proposed or implemented. However, such configurations that are specific to various fields or applications have not been practical for more general FPGA implementations.

SUMMARY

FPGAs according to the present disclosure are generally made of structures or logic blocks including circuitry such as AND-OR layers for implementing Boolean Sums-of-Products configurations. In an illustrative embodiment, logic blocks are disclosed herein that can replace the use of LUTs in an FPGA. The logic blocks disclosed herein can provide an improved compromise between hardware complexity, flexibility, delay, and input and output counts of an FPGA relative to a conventional FPGA.

In an illustrative embodiment, logic blocks are based on And-Inverter Graphs (AIGs) and include 2-input AND gates coupled to an optional inverter at the output. The logic blocks can have multiple independent outputs. This implementation may be used in combination with, for instance, Boolean Satisfiability (SAT) solvers. Once a circuit is written and optimized in the form of an AIG according to the present disclosure, many AIG subgraphs of various depths rooted at different nodes in the circuit can be found.

In the illustrative embodiment, the disclosed logic blocks have a complexity which only increases linearly with the number of inputs. Delay associated with the disclosed logic blocks increases only logarithmically with the number of inputs.

Aspects of the present disclosure provide effective mapping algorithms and a simplified logic block structure for constructing FPGAs. One or more LUTs can still be used in combination with the disclosed logic blocks in an FPGA.

In an illustrative embodiment, the disclosed logic block includes an AND-Inverter Cone structure (AIC). The disclosed AIC provides a reconfigurable circuit to which arbitrary AIGs can be naturally mapped. In the illustrative embodiment, an AIC includes a number of cells configured in a binary tree arrangement with a number of intermediary outputs. Each cell includes an AND gate selectably coupled to an inverter.

The disclosed AICs can provide improved input bandwidth and output bandwidth compared to LUTs, because the area of the AICs grows only linearly with the number of inputs and delay associated with an AIC grows only logarithmically with the input count. Because an AIC may include multiple outputs, intermediate outputs may be easily implemented which allows mapping circuits more efficiently than LUTs. Because the AICs are multi-output blocks, having higher input bandwidth than LUTs, they can cover more logic depth. This makes it possible for AICs to cover AIG nodes more efficiently.

In an illustrative embodiment, the AIC includes cells having an input and an output. Each of the cells is configurable or programmable as an AND gate or a NAND gate. The cells may include a programmable conditional inversion. Further, at least one of the cells may be configurable as a bypass.

In this illustrative embodiment, the cells are typically arranged in a tree structure, which may be a binary tree structure, having a number of levels, for example a top level, an intermediary level, and a bottom level. The input may include two inputs to each of the cells in the top level, and the output from the cells may include an intermediary output from the intermediary level and an output from the bottom level.

In an illustrative embodiment the AIC is a 3-AIC, wherein the tree structure includes three levels, a top level, one intermediary level, and a bottom level. The 3-AIC, includes seven cells, four in the top level, two in the intermediary level, and one in the bottom level. Thus, the 3-AIC may include eight inputs, two for each cell in the top level, and three outputs, two intermediary outputs from the intermediary level and one output from the bottom level.

In an illustrative embodiment the AIC is a 4-AIC, wherein the tree structure includes four levels, a top level, a first intermediary level, a second intermediary level, and a bottom level. The 4-AIC, includes fifteen cells, eight in the top level, four in the first intermediary level, two in the second intermediary level, and one in the bottom level. Thus, the 4-AIC may include sixteen inputs, two for each cell in the top level, and seven outputs, four first intermediary outputs from the first intermediary level, two second intermediary outputs from the second intermediary level, and one output from the bottom level.

In an illustrative embodiment the AIC is a 5-AIC, wherein the tree structure includes five levels, a top level, a first intermediary level, a second intermediary level, a third intermediary level, and a bottom level. The 5-AIC, includes thirty one cells, sixteen in the top level, eight in the first intermediary level, four in the second intermediary level, two in the third intermediary level, and one in the bottom level. Thus, the 5-AIC may include thirty two inputs, two for each cell in the top level, and fifteen outputs, eight first intermediary outputs from the first intermediary level, four second intermediary outputs from the second intermediary level, two third intermediary outputs from the third intermediary level, and one output from the bottom level.

In an illustrative embodiment the AIC is a 6-AIC, wherein the tree structure includes six levels, a top level, a first intermediary level, a second intermediary level, a third intermediary level, a fourth intermediary level, and a bottom level. The 6-AIC, includes sixty three cells, thirty two in the top level, sixteen in the first intermediary level, eight in the second intermediary level, four in the third intermediary level, two in the fourth intermediary level, and one in the bottom level. Thus, the 6-AIC may include sixty four inputs, two for each cell in the top level, and thirty one outputs, sixteen first intermediary outputs from the first intermediary level, eight second intermediary outputs from the second intermediary level, four third intermediary outputs from the third intermediary level, two fourth intermediary outputs from the fourth intermediary level, and one output from the bottom level.

In an illustrative embodiment one or more of the AICs or a combination of AICs, including a 2-AIC, 3-AIC, 4-AIC, 5-AIC, and 6-AIC, may be integrated into a programmable integrated circuit. For example, when integrated into a circuit one or more of the AICs may be in communication with one or more input crossbars, and output to one or more logic block crossbars. The logic block crossbars may then output to one or more multiplexers and/or one or more optional flip-flops. The flip-flips, when included, output to the multiplexers. The multiplexers may then communicate with an output crossbar.

BRIEF DESCRIPTION OF THE DRAWINGS

The systems, methods, and apparatuses disclosed herein are illustrated in the figures of the accompanying drawings which are meant to be exemplary and not limiting, in which like references are intended to refer to like or corresponding parts, and in which:

FIG. 1 illustrates an architecture of an AIC having a depth of five or five levels of cells;

FIG. 2 illustrates an example of cone generation for AIC mapping;

FIG. 3 illustrates an example of cone generation for LUT mapping;

FIG. 4 illustrates a LUTs mapping of an AIG;

FIG. 5 illustrates an AIC mapping of the AIG of FIG. 4;

FIG. 6 illustrates an example algorithm presenting pseudo-code of a best cone finder;

FIG. 7 illustrates an embodiment of different scenarios of the input crossbar in an AIC cluster comprising of 6-AIC(s); and

FIG. 8 illustrates an embodiment of an AIC cluster including three 6-AICs.

DETAILED DESCRIPTION

Detailed embodiments of systems, methods, and apparatuses that relate to the implementation of logic in integrated circuits are disclosed herein, however, it is to be understood that the disclosed embodiments are merely exemplary of the systems, methods, and apparatuses disclosed herein, which may be embodied in various forms. Therefore, specific functional details disclosed herein are not to be interpreted as limiting, but merely as a basis for the claims and as a representative basis for teaching one skilled in the art to variously employ the systems, methods, and apparatuses disclosed herein.

In an illustrative embodiment, new logic blocks, AND-Inverter Cones (AICs), are disclosed herein. In one embodiment, an AIC is a binary tree composed of AND gates with one or more programmable conditional inversions and a number of intermediary outputs. The AICs may be used as the sole logic components of integrated circuits, such as programmable integrated circuits and Field-Programmable Gate Array (FPGAs). The AIC(s) attempts to reduce the degree of generality provided by typical LUTs in order to obtain faster mappings. Unlike Look-Up tables (LUTs), the AIC may not implement all possible functions of its inputs. However, the AIC can provide a better compromise between hardware complexity, flexibility, delay, and input and output counts. Further, one or more LUTs can still be used in combination with the disclosed logic blocks in an FPGA.

In an illustrative embodiment, an And-Inverter Graph (AIG) is a directed acyclic graph (DAG), in which the logic nodes are two-input AND gates and the edges can be complemented to represent inverters at the node outputs. AIGs are advantageous for combinational logic synthesis and optimization. This graph representation format may also be used for technology mapping steps in both FPGA and application-specific integrated circuit (ASIC) designs.

AIGs in the illustrative embodiment include various cone-like subgraphs rooted at each node with different depths. Usually, the subgraphs with lower depths are more symmetric and resemble full binary trees. The frequent occurrence of such conic subgraphs serves as a basis for the implementation of the AICs that can map cones with different depths more efficiently than LUTs. The basic principle is to have a symmetric and conic block with depth D, which maps arbitrary AIG subgraphs with depth D.

An architecture of an AND-Inverter Cone (AIC) 100 having a depth of five or five levels of cells according to an illustrative embodiment is described with reference to FIG. 1. As illustrated in FIG. 1, the AIC having a depth of five (a 5-AIC) 100 may include thirty one (31) cells, for example, illustrated as 102. Each cell 102, can be configured as either a two-input NAND or AND gate. For example, in an illustrative embodiment, each cell 102 may include a NAND gate 104 coupled to an inverter 106. Additionally, the NAND gate 104 and the inverter 106 may be coupled to a multiplexer (MUX) 108 configured to receive a select signal 110 for enabling or disabling the inverter 106.

As illustrated in FIG. 1, there are sixteen cells 102 in a top or lowest level 112, eight cells 102 in a first intermediary level 114, four cells 102 in a second intermediary level 116, two cells 102 in a third intermediary level 118, and one cell 102 in a bottom level 120. Thus, the 5-AIC 100 may include thirty two inputs, (i₀-i₃₁), two for each cell 102 in the top level 112.

Further, as illustrated, except for the cells 102 at a lowest or top level 112, of the AIC 100, each cell 102 at levels 114, 116, 118, and 120 has an output, O₀-O₁₄. Thus, the 5-AIC 100 includes fifteen outputs (O₀-O₁₄), eight first intermediary outputs (O₇-O₁₄) from the first intermediary level 114, four second intermediary outputs (O₃-O₆) from the second intermediary level 116, two third intermediary outputs (O₁ and O₂) from the third intermediary level 118, and one output (O₀) from the bottom level 120. This provides access to intermediate nodes. Moreover, these outputs enable a larger AIC to be configured as multiple smaller AICs. For example, a 2-AIC, illustrated as 122, includes two levels, a top level and a bottom level. The 2-AIC 122, includes three cells, two cells in the top level and one cell in the bottom level. Thus, the 2-AIC 122 may include four inputs, for example, i₀-i₃, and one output, for example O₇ from the bottom level.

A 3-AIC, illustrated as 124, includes three levels, a top level, one intermediary level, and a bottom level. The 3-AIC 124, includes seven cells, four cells in the top level, two cells in the intermediary level, and one cell in the bottom level. Thus, the 3-AIC 124 may include eight inputs, for example, i₈-i₁₅, and three outputs, for example, O₄, O₉, and O₁₀. The outputs include two intermediary outputs from the intermediary level, for example, O₉ and O₁₀, and one output from the bottom level, for example, O₄.

A 4-AIC, illustrated as 126, includes four levels, a top level, a first intermediary level, a second intermediary level, and a bottom level. The 4-AIC 126, includes fifteen cells, eight cells in the top level, four cells in the first intermediary level, two cells in the second intermediary level, and one cell in the bottom level. Thus, the 4-AIC 126 may include sixteen inputs, for example, i₁₆-i₃₁, and seven outputs, for example, O₂, O₅, O₆, and O₁₁-O₁₄. The outputs include four first intermediary outputs from the first intermediary level, for example, O₁₁-O₁₄, two second intermediary outputs from the second intermediary level, for example, O₅ and O₆, and one output from the bottom level, for example, O₂.

Accordingly, a 5-AIC contains two 4-AICs, four 3-AICs and eight 2-AICs. As illustrated in FIG. 1, values can be propagated by configuring a node as a bypass 128, for example, forcing one input to 1 when this is operated as an AND. Moreover, some nodes may be replicated, illustrated as 130, when the fanout of an internal value is higher than one.

Generalizing, each D-AIC, has 2^(D)−1 cells, 2^(D) inputs and 2^(D)−2^(D)−1 outputs. For example, a 6-AIC, includes six levels, a top level, a first intermediary level, a second intermediary level, a third intermediary level, a fourth intermediary level, and a bottom level. The 6-AIC, includes sixty three cells, thirty two cells in the top level, sixteen cells in the first intermediary level, eight cells in the second intermediary level, four cells in the third intermediary level, two cells in the fourth intermediary level, and one cell in the bottom level. Thus, the 6-AIC may include sixty four inputs, two for each cell in the top level, and thirty one outputs, sixteen first intermediary outputs from the first intermediary level, eight second intermediary outputs from the second intermediary level, four third intermediary outputs from the third intermediary level, two fourth intermediary outputs from the fourth intermediary level, and one output from the bottom level.

Below, the effect of the allowed AIC depth on the mapping solution is described in relation to D-AICs with depths between two and six. Although, depths of six (6) and below are described herein, it should be appreciated that depth greater than six (6) may be constructed. Table 1, illustrated below, compares different D-AICs with the conventional 6-LUT in terms of input/output (I/O) bandwidth, number of configuration bits, and multiplexers (MUX). As illustrated in Table 1, AICs have a lower number of configuration bits than LUTs, while AICs can implement circuits that have a much higher number of inputs.

TABLE 1 Comparison of different D-AICs with the conventional 6-LUT in terms of I/O bandwidth, number of configuration bits, and MUX. Block Inputs Outputs 2:1 MUX Config. Bits 2-AIC 4 1 3 3 3-AIC 8 3 7 7 4-AIC 16 7 15 15 5-AIC 32 15 31 31 6-AIC 64 31 63 63 6-LUT 6 1 64 64

In an illustrative embodiment, during technology mapping, the nodes comprising the AIG are clustered into subgraphs that can be mapped onto an AIC or a LUT. This can be done in multiple ways depending on the optimization objectives.

As described herein, the optimization objectives of technology mapping are delay minimization and area reduction. In an illustrative embodiment, delay minimization is the primary optimization objective and area reduction is the secondary optimization objective. In this illustrative embodiment, a mapping solution may be said to be optimal if the mapping delay is minimum. In another illustrative embodiment, area reduction is the primary optimization objective and delay minimization is the secondary optimization objective. In this illustrative embodiment, a mapping solution may be said to be optimal if the area is minimum. The technology mapping for AICs is similar to the typical LUT technology mapping but adapted to the peculiarities of AICs, such as the fact that multiple outputs are possible. Below, the steps of the mapping algorithm are described in detail.

In an illustrative embodiment, a technology independent synthesized netlist (AIG format) is input to a mapping heuristic. Such a netlist can be automatically produced by known synthesis tools such as ABC available from Berkeley Logic Synthesis and Verification Group of Berkeley, Calif., for example. The input netlist is used to extract the combinational parts of the circuit and represent the combinational parts by a DAG G=(V(G),E(G)). For sequential circuits, flip-flops are cut to obtain the combinational sub-circuits, which are represented by the DAG. A node vεV(G) can represent an AND gate, a primary input (PI), a pseudo input (PSI, output of a flip-flop), primary output (PO) or pseudo output (PSO, input of a flip-flop). A directed edge eεE(G) represents an interconnection wire in the input netlist. The edge can have the complemented attribute to represent the inversion of the signal.

At a node v, the depth, depth(v), denotes the length of the longest path from any of the PIs or PSIs to the v. The height, height(v), denotes the length of the longest path from v to any of the POs or PSOs. Accordingly, the depth of a PI or PSI node and the height of a PO or PSO node are zero.

The mapping algorithm used herein is a modified version of the classical depth optimal LUT mapping algorithm. However, it should be appreciated by those skilled in the art that other mapping algorithms may be used. Further, it should be appreciated by those skilled in the art that the problem of minimizing the depth can be solved optimally in polynomial time using dynamic programming. However, area-minimization is also targeted as an objective, which is known to be NP-hard for LUTs of size three and greater. An area flow heuristic may be used for area approximation during the mapping.

The mapping of a graph in LUTs requires different considerations. For a node v, there exists several subgraphs containing v as the root, which are called cones. Accordingly, C_(v) is a cone that includes node v in its root and some of (all) its predecessors that have a path to v. For mapping C_(v) by a LUT, it should be K-feasible, where inputs(C_(v))≦K. Moreover, the cone should be fanout-free, meaning that the only path out of C_(v) is through v. If the cone is not fanout-free, then the node which provides the fanout may be duplicated and will be mapped by other LUT(s), as depth minimization is one objective.

The AICs mapping cone candidates of v are extracted differently. In this case, rather than being K-feasible, a cone C_(v), to be mappable on a D-AIC block, should be depth feasible, where depth(C_(v))≦D. The other constraint is that the nodes at lowest depth of C_(v), should not have any path to a node outside C_(v), otherwise such nodes are removed from C_(v). This later condition ensures C_(v) to be mappable to the D-AIC of FIG. 3, in which no output is permitted for the nodes at the lowest level of the AIC.

When AICs are considered as the mapping target in addition to LUTs, the definition of the mapping for depth problem does not change. The only difference is that the cone candidates of AICs are added to the cone candidates of LUTs for each node in the graph. Although the conditions of eligibility for LUTs and AICs are different, it is possible to have common cones between the two that are treated as separate candidates. The main steps of the mapping algorithm are described below in detail. The cones of a node may be computed by combining the cones of the input nodes in every possible way. This step of the mapping takes a significant portion of the total execution time, especially when K is a large value such as six.

The cone generation for AICs is different from the cone generation for LUTs, as the cones of each node are produced independent of the cones of its input nodes. To generate all possible D-AIC mappable cones for a node v, the subgraphs rooted at v are examined by varying the cone depth from two to D. All possible subgraphs that meet the AIC mapping conditions, described above, are added to the cone set of node v. If a cone C_(v) satisfies the depth condition, but has a fanout node u at the lowest depth of the cone, u will be removed from C_(v) and if this still satisfies the depth condition, the cone will be added to the D-AIC mappable cone set.

The main difference between the cone generation for AICs and LUTs is having common cone candidates for different nodes, as illustrated in FIGS. 2 and 3. FIG. 2 illustrates an AIC mapping 200, and FIG. 3 illustrates a LUT mapping 300. As illustrated in FIG. 2, the AIC has multiple outputs, O₀ and O₁. Thus, a cone 202 that has u as its root, can be used to map v as well as u. Therefore, the cone 202 should be in the AIC cone sets of both v and u. The cone 202 is referred to as a free cone for node v, as the cone 202 maps v for free when it is selected for u mapping. In contrast, as illustrated in FIG. 3, in LUT mapping, no common cone exists for any two nodes. For example, the cone 302 has u as its root, and the cone 304 has v as its root. Thus, in LUT mapping, the cone 302 that has u as its root, cannot be used to map v.

The potential benefits of AICs with respect to LUTs is illustrated in FIGS. 4 and 5. FIGS. 4 and 5 illustrate an AIG circuit functionality 400 having eight (8) inputs, i₀-i₇, and two (2) outputs, O₀-O₁. As illustrated in FIG. 4, two levels of LUTs, a first LUT 402 and a second LUT 404, are required to map the AIG 400. In contrast, as illustrated in FIG. 5, the same AIG 400 can be mapped onto a single AIC 500. The reason for that is two-fold: (1) on the one hand, the LUT size is limited to six inputs and the entire AIG 400, which includes eight inputs, can not fit into a single 6-LUT; and (2) on the other hand, even if the size of the LUT was big enough, the mapping would still use two LUTs, as the AIG 400 has two distinct outputs. Further, increasing the LUT size to accommodate more inputs would result in a large area overhead. Instead, the AIC offers a smaller area and propagation delay than a LUT for the same number of inputs. For example, a 4-AIC with sixteen (16) inputs requires half of the area of a 6-input LUT with less delay. The fact that more wires need to be connected to the AICs arise new routing congestion issues. However, as described below, these routing congestion issues can largely be alleviated by packing several AICs in a limited bandwidth AIC cluster with local interconnect.

In an illustrative embodiment, the time complexity of the D-AIC cone generation is O(M×D), where M is the number of nodes in the graph and D is the maximum depth of a AIC block.

In an illustrative embodiment, once the cone sets of both LUTs and AICs for every node in the graph are obtained or determined, the next step is to find the best cone of each node. Since one objective is to minimize the depth, the best cone of node v is the one that gives v the lowest depth. If there is more than one option, the cone which brings less area flow to v is selected. The depth and area flow of v, when mapped onto cone C_(v), are dependent on the depth and area flow values of the C_(v) input nodes. Since the nodes in the graph are visited in topological order, it is ensured that the depth and area flow values of the predecessor nodes of v have been determined before v is visited. For PIs and PSIs, the depth and area flow values are initialized to zero.

In an illustrative embodiment, the following equations describe the computation of depth, dp(v), and area flow, af(v), of node v. The FPGA blocks, including K-LUTs and D-AICs are heterogeneous and have different depths. Thus, the interconnection wire delays for the depth computation of each node should be considered similar to the edge-delay model. Although, there are both local (intra cluster) and global (inter cluster) routing wires, which have different delays, for purposes of this computation it is assumed that all wires have an equal delay, which is the average delay of the local and global routing wires.

$\begin{matrix} {{{dp}(v)} = {\max\left( {{{dp}\left( {{In}\left( C_{v} \right)} \right)} + {{dp}\left( C_{v} \right)} + {{dp}({wire})}} \right.}} & (1) \\ {{{af}(v)} = {{\sum\limits_{i = 0}^{{nIn}{(C_{v})}}{{af}\left( {{In}_{i}\left( C_{v} \right)} \right)}} + {{area}\left( C_{v} \right)}}} & (2) \end{matrix}$

dp(C_(v)) and area(C_(v)) in the above equations are the depth and area of the logic block that C_(v) can be mapped on, respectively. This block can be either a K-LUT or a D-AIC. If C_(v) is a free cone of node v, then dp(C_(v)) and dp(In(C_(v)) will refer to the depth and inputs of the sub-AIC in C_(v), respectively. For area flow computation, the term area(C_(v)) will be removed from Equation 2.

FIG. 6 illustrates an algorithm that presents pseudo-code of the best cone finder. The algorithm, illustrated in FIG. 6, iterates over all generated cones for both LUTs and AICs in node v. The depth and area flow of v is determined for each cone C_(v) and then the depth is compared with the depth of v in the best cones that have been explored so far. If the current depth is lower or if the current depth is equal and the current area flow is lower, then the current cone is selected as the best cone. This process is repeated for all cones of v.

If the best cone of node v is a free cone, the cone will be selected for the mapping if and only if the cone root, which is not v, is visible in the final mapping solution and this cone is the best cone of the root node as well. If one of these two conditions does not hold, then another cone is selected as the best cone for node v. Therefore, a non-free best cone should be maintained, which has v as its root, for node v as a backup best cone.

In an illustrative embodiment, once the best cones for LUTs and AICs are obtained or determined, the graph is covered by the best cones of the visible nodes in the graph, which are added to a mapping solution set S. A node is referred to as visible, if the node is an output or input node of a selected cone in the final mapping. Initially POs and PSOs are the only visible nodes and S is empty. The graph traversal is performed in the reverse topological order from POs and PSOs to PIs and PSIs. If the visited node v is visible, then its best cone, BC_(v), is selected for the mapping and is added to S. Then, all the input nodes of BC_(v) are marked as visible and the graph traversal continues. If the BC_(v) is a free cone and it is already in S, there is no need to add it again and only the heights of the input nodes of v are updated. Otherwise, if the free cone is not in S, then the backup BC_(v), which has v as its root, is selected for the mapping and is added to S. During the backward traversal, the height of each visible node is updated. The initial heights of all nodes are zero. Once a BC_(v) is selected for the mapping, the height of its input nodes are updated by adding the height of v to the depth of v within the target AIC.

The mapping solution resulting from the reverse graph traversal includes all of the cones that cover the graph. In an illustrative embodiment, once all of the cones that cover the graph are obtained or determined, each of the cones are mapped to either a K-LUT or a D-AIC. If the selected cone belongs to a K-feasible cone set of node v, then the cone has to be implemented by a LUT. Otherwise the cone is a D-AIC mappable cone, which is implemented by an AIC. The depth of the cone defines the type of the target AIC block.

In an illustrative embodiment, the proposed AICs may require a much higher I/O bandwidth than typical LUTs. In order to alleviate the routing problem that may result from that increase, multiple AICs can be grouped together into an AIC cluster with one or more local interconnects.

In an illustrative embodiment, a 6-AIC may be selected as the logic block to form an AIC cluster. The 6-AIC block covers all sub-AICs in Table 1. The AIC cluster includes N 6-AICs, optional flip-flops at the outputs of the N 6-AICs to support sequential circuits, and an input and an output crossbar. The AICs of the cluster are interconnected through the input crossbar. The input crossbar takes the cluster inputs as well as the outputs of the AICs in the cluster and routes these signals to the inputs of the AICs in the cluster. Such a crossbar is a circuit including multiplexers, which can be configured to route any input to any output of the crossbar. The input crossbar can also be depopulated to reduce the area of the input crossbar and in this case, some of the inputs may be routed to some of the outputs of the input crossbar.

In an illustrative embodiment, the input crossbar routes the cluster inputs and the outputs of N 6-AICs to the input of N 6-AICs and the output crossbar routes the outputs of N 6-AICs to the cluster outputs. In an illustrative embodiment, the same bandwidth of LUT-based clusters can be used for AIC clusters, and the AIC cluster area can be kept close to the area of the reference LUT cluster, which is the Logic Array Block (LAB) in the Altera Stratix-III available from Altera Corporation of San Jose, Calif., to avoid changing the inter-cluster routing of the FPGAs.

The two crossbars in the AIC cluster, are the main contributors to the cluster area. Crossbars are basically constructed by multiplexers and their area depends on their density and the number of the crossbar inputs and outputs. Since both crossbars obtain the outputs of N 6-AICs as the input, reducing the number of the 6-AIC outputs can significantly reduce the area share of the crossbars. Originally, each 6-AIC has 31 outputs. However, it has been observed that in the worst case 16 outputs are generally utilized and this happens when a 6-AIC is configured to 16 2-AICs. Thus, in one illustrative embodiment, a very simple sparse crossbar can be added at the output of each 6-AIC to reduce the number of 6-AIC outputs to 16.

In another illustrative embodiment, the crossbar area may be reduced by decreasing the connectivity of the crossbar and making the crossbar sparse. To trade-off the crossbar density and packing efficiency in the AIC cluster, the connectivity of the input crossbar of the cluster was varied from 50%, 75% and 100% connectivity, as illustrated in FIG. 7. As illustrated in FIG. 7, a 6-AIC 700 includes two crossbars at its inputs, a first crossbar 702 and a second crossbar 704. Each of the first crossbar 702 and the second crossbar 704 routes the cluster inputs to half of the 6-AICs inputs. As illustrated, the 64 cluster inputs 706 are divided into two sets of 32 inputs, a first set of 32 inputs 708 and a second set of 32 inputs 710 with 0/16/32 shared inputs between the two sets for a 32×32 (50%) connectivity, a 48×32 (75%) connectivity, and a 64×32 (100%) connectivity scenario, respectively. In this illustrative embodiment, each of the crossbars also route the AICs outputs to the AICs inputs, not shown in FIG. 7 for the sake of clarity.

The packing efficiency is the ratio of number of AIC clusters, assuming that the AIC cluster has unlimited bandwidth, and the actual number of AIC clusters that are obtained from the packing. To calculate the number of clusters in the ideal packing, Equation 3, presented below, is used. In Equation 3, nC_(i) is the number of cones with depth i. The reported efficiency is the average packing efficiency of the 20 biggest MCNC benchmarks. In this illustrative embodiment, the allowed cone depth for the AIC cones in the technology mapping is varied from six to two. For each depth value, only cones with smaller or equal depth are considered for the mapping. Note that, for all of the experiments, the 6-AIC is used for the packing.

$\begin{matrix} {{nClusters}_{ideal} = {\sum\limits_{i = 2}^{6}\left( \frac{n\; C_{i}}{N \times 2^{6 - i}} \right)}} & (3) \end{matrix}$

The packing efficiency is reduced for all three scenarios substantially when the allowed cone depth in the technology mapping is reduced. This is reasonable, as the probability of inputs sharing and having open inputs is decreased for smaller cones. Moreover, when smaller AICs are packed to a 6-AIC, a larger number of the 6-AIC outputs are utilized and this increases the output bandwidth. Additionally, when the 48×32 crossbar is used, the packing efficiency is quite close to the packing efficiency of the 64×32 full crossbar. However, the packing efficiency for the 32×32 crossbar decreases to a larger extent. Therefore, one option to reduce the crossbar area without having a sensible degradation in packing efficiency is to set the crossbar connectivity to 75% (the 48×32 scenario).

Exploiting the crossbar simplifications, to keep the area of the AIC cluster close to the area of a LUT cluster (LAB), three 6-AICs can be in a cluster. The area model used and the area estimation of each component in the AIC cluster is detailed below.

As described above the architecture of AIC cluster is defined. In an illustrative embodiment, having the AIC cluster and also the LUT cluster (LAB), the technology mapped netlist can be taken and packed onto the above mentioned clusters. For the packing, the AAPack tool, for example, can be used, which is an architecture-aware packing tool developed for FPGAs. The AAPack tool is a packing tool developed at the University of Toronto, in Toronto, ON, Canada. The AAPack tool is integrated into another tool called Versatile Place and Route, see http://www.eecg.utoronto.ca/vtr/.

The input to the AAPack is the technology mapped netlist with unpacked blocks, as well as a description of an FPGA architecture. The output is a netlist of packed complex blocks that is functionally equivalent to the input netlist. Note that, AAPack may also be used to pack LUTs in LABs.

In this illustrative embodiment, the packing algorithm uses an affinity metric to optimize the packing. This affinity metric defines the amount of net sharing between p, which is a packing candidate, and B, which is a partially filled complex block. In the architecture file, the complex block should be represented as an ordered tree. Nodes in the tree correspond to physical blocks or modes. The root of the tree corresponds to an entire complex block and the leaf nodes correspond to the primitives within the complex block. For the 6-AIC complex block, a tree is constructed, by which different configuration modes of the 6-AIC are defined.

Also, in the architecture file, the number of AICs in the cluster is defined, as well as the crossbars structure. This information is used by the packer to group the individual blocks in clusters. During the packing process, some routability checking may be performed to ensure (both local and global) routability of the packing solution, considering the intra block and the general FPGA interconnect resources.

As mentioned above, the area model is based on the transistor area in units of minimum-width transistor area; the rationale is that to a large extent the total area is determined by the transistors more than by the metal connections. For the delay model, circuits are modeled using SPICE simulations, as known in the art, for a 90-nm CMOS process technology.

The area modeling method generally requires a detailed transistor-level circuit design of all the circuitry in the FPGA. FIG. 8, illustrates a structure and delay paths of an AIC cluster including three 6-AIC blocks. As illustrated in FIG. 8, the circuit diagram includes a cluster input crossbar 800, a 6-AIC block 802 in communication with the cluster input crossbar 800, an AIC output crossbar 804 in communication with the 6-AIC blocks 802, flip-flops (FFs) 806 in communication with the AIC output crossbar 804, multiplexers (MUXs) 808 in communication with the AIC output crossbar 804 and the FFs 806, and a cluster output crossbar 810 in communication with the MUXs 808. In general, an input of the 6-AIC block 802 communicates with an output of the cluster input crossbar 800. An input of the AIC output crossbar 804 communicates with an output of the 6-AIC block 802. An input of the FFs 806 communicates with an output of the AIC output crossbar 804. An input of the MUXs 808 communicates with the output of the AIC output crossbar 804 and an output of the FFs 806. An input of the cluster output crossbar 810 communicates with an output of the MUXs 808.

In an illustrative embodiment, the detailed transistor-level circuit design for the AIC cluster illustrated in FIG. 8, was determined, approximately sizing the transistors where appropriate. Table 2, illustrated below, lists the area of different components in the AIC cluster and in a LAB in terms of number of minimum-width transistors. Note that, in Table 2, ALM stands for Adaptive Logic Module which is the logic block in Altera Stratix-II and Stratix-III available from Altera Corporation of San Jose, Calif., and other Altera Stratix products. Based on Table 2, the area of an AIC cluster with three 6-AICs and the crossbars described above is slightly more than the area of a LAB with 10 ALMs.

TABLE 2 Areas of different components in an AIC cluster and in a LAB, measured in units of minimum-width transistor area. Component Area (Tr_(minW)) 6-AIC block (802) 1,512 6-AIC output crossbar (804) 1,088 6-AIC FFs (806) and MUXs (808) 1,104 AIC cluster input crossbar (800) 21,888 AIC cluster out crossbar (810) 2,660 AIC cluster buffers 1,447 AIC cluster with three 6-AICs 37,137 ALM 1,751 LAB in crossbar 15,702 LAB buffers 470 LAB with ten ALMs 33,682

The circuit level design of the AIC cluster illustrated in FIG. 8 may also be used for modeling the cluster delays. The crossbars illustrated in FIG. 8 are developed using multiplexers, and for these a two level hybrid multiplexer was adopted, for example as used in Stratix-II. In this illustrative embodiment, the critical path of each crossbar goes through two pass gates, with buffers on the inputs and outputs of the components that include pass transistors.

In an illustrative embodiment, a SPICE simulation with a 90 nm 1.2-V CMOS process can be performed, to determine the delay of all paths in the cluster illustrated in FIG. 8. As illustrated in FIG. 8, points A, B, C, and D are identified. A path from point A to point B includes the 6-AIC 802 main output. A path from point B to point C includes the AIC output crossbar 804, FFs 806, and MUXs 808. A path from point C to point D includes the cluster output crossbar 810. The results of the simulation are listed in Table 3, illustrated below. For the path between point B and point C, the delay number relates to the path that goes through the main output of the 6-AIC, which has the longest path. These delay numbers are used in the technology mapping to minimize the delay of the mapped circuit.

TABLE 3 Delays of different paths in the AIC cluster illustrated in FIG. 8. Path Description Delay (ps) A → B 6-AIC (802) main output 496 B → C Crossbar (804), FFs (806), and MUXs (808) 75 C → D Output crossbar of cluster (810) 50

In an illustrative embodiment, the delay of a LAB may also be measured by performing a SPICE simulation. The simulation results revealed that the delay of a 6-LUT in an ALM, excluding the LAB input crossbar, in a 90 nm CMOS process, is between 280 ps and 500 ps, taking into account that different LUT inputs have different delays.

Although the area and delays of the AIC cluster illustrated in FIG. 8 are described above using certain modeling techniques, it should be appreciated by those skilled in the art that other modeling techniques and algorithms may be used and that the area and delay determinations presented in Tables 2 and 3 and described may change based on the modeling technique, technology, and implementation of the AIC.

In an illustrative embodiment, the AICs may be implemented as one or more shadow clusters and/or combined with other blocks in FPGAs, for example, but not limited to, Digital Signal Processing (DSP) blocks and LUTs. In general, a shadow cluster is a standard FPGA logic cluster, typically consisting of a group of LUTs and flip-flops, that is placed within the same logical tile as a circuit and can be programmed to replace the circuit when the circuit is not needed. See P. Jamieson and J. Rose, “Enhancing the Area Efficiency of FPGAs With Hard Circuits Using Shadow Clusters,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 18(12): 1696-1709, December 2010, the contents of which are incorporated herein by reference in their entirety. The disclosed AIC(s) can replace or supplement the LUTs in a shadow cluster and be implemented in an FPGA.

The new logic blocks (AICs), described herein, which are natural configurable circuit homologues of the AIGs seek to cure the issues associated with LUTs. Additionally, alternate FPGAs architectures based on these AICs are also disclosed herein, essentially fitting the AICs into a traditional FPGA architecture without changing some global parameters. On one hand, delay is bound to decrease as both logic delay and the number of logic blocks on the critical path is reduced. Using a fairly rough routing delay model, a delay reduction of about 25-30% is observed. On the other hand, the number of logic blocks (all of similar area) consumed by the benchmark circuits is also generally reduced; with one of the mapping approaches, the area is reduced on average by about 16%.

Although, the AICs are described herein as the sole components of new FPGAs, the AICs may be used as logic blocks for a hybrid FPGA made of both LUTs and AICs. Additionally, although the AICs are described herein as implemented in FPGAs, those of ordinary skill in the art should appreciate that the AICs may be implemented in other programmable design approached, for example structured Application-Specific Integrated Circuits (ASICs).

Although, the new logic block is described herein as an AND-Inverter Cone (AIC), in Boolean algebra there is perfect duality between AND and OR. For example, an OR gate with all inputs inverted, a Negative-OR gate, behaves the same as a NAND gate, and an AND gate with all inputs inverted, a Negative-AND gate, behaves the same as a NOR gate. Thus, designing an AND-Invert Cone (AIC) and an OR-Invert Cone (OIC) is equivalent for any practical purpose. The difference is merely that the OIC includes OR and/or NOR gates instead of AND and/or NAND gates. Therefore, the AND-Inverter Cones (AICs) and OR-Invert Cones (OICs) are interchangeable with one another, and the disclosure should not be limited to AICs.

Although the systems, methods, and apparatuses disclosed herein has been described and illustrated in connection with preferred embodiments, many variations and modifications will be evident to those skilled in the art and may be made without departing from the spirit and scope of the disclosure. The disclosure is thus not to be limited to the precise details of methodology or construction set forth above as such variations and modification are intended to be included within the scope of the disclosure. 

What is claimed is:
 1. A logic block implemented in an integrated circuit, comprising: a plurality of cells formed in said integrated circuit, each of said cells consisting of data inputs, a select input, a logic gate, and a programmably selectable inverter coupled to said logic gate, each of said data inputs to said cell consisting only of an input to said logic gate, said logic gate including a logic gate output, said programmably selectable inverter coupled to said logic gate output, and said select input configured for enabling or disabling said programmably selectable inverter; a tree structure arrangement comprising a number of levels formed by said cells; a plurality of inputs to said tree structure in a first level of said tree structure comprising said data inputs to said cells in said first level; and an output from said tree structure in a last level of said tree structure.
 2. The logic block of claim 1, wherein said tree structure is a binary tree structure.
 3. The logic block of claim 1, wherein at least one of said cells is configurable as a bypass.
 4. The logic block of claim 1, wherein said number of levels includes said first level, said last level, and an intermediary level.
 5. The logic device of claim 4, wherein said plurality of inputs to said tree structure includes two inputs to each of said cells in said first level.
 6. The logic block of claim 4, further comprising an intermediary output from said intermediary level.
 7. The logic block of claim 6, wherein: said plurality of inputs to said tree structure includes eight inputs, and said intermediary output includes two intermediary outputs from said intermediary level.
 8. The logic block of claim 6, wherein: said plurality of inputs to said tree structure includes sixteen inputs, said intermediary level includes a first intermediary level and a second intermediary level, and said intermediary output includes four first intermediary outputs from said first intermediary level and two second intermediary outputs from said second intermediary level.
 9. The logic block of claim 6, wherein: said plurality of inputs to said tree structure includes one of thirty two, sixty four, and one hundred and twenty eight inputs, said intermediary level of said logic block of said thirty two inputs includes a first intermediary level, a second intermediary level, and a third intermediary level; said intermediary level of said logic block of said sixty four inputs includes a first intermediary level, a second intermediary level, a third intermediary level, and a fourth intermediary level; said intermediary level of said logic block of said one hundred and twenty eight inputs includes a first intermediary level, a second intermediary level, a third intermediary level, a fourth intermediary level, and a fifth intermediary level; and said intermediary output of said logic block of said thirty two inputs includes eight first intermediary outputs from said first intermediary level, four second intermediary outputs from said second intermediary level, and two third intermediary outputs from said third intermediary level; said intermediary output of said logic block of said sixty four inputs includes sixteen first intermediary outputs from said first intermediary level, eight second intermediary outputs from said second intermediary level, four third intermediary outputs from said third intermediary level, and two fourth intermediary outputs from said fourth intermediary level; said intermediary output of said logic block of said one hundred and twenty eight inputs includes thirty two first intermediary outputs from said first intermediary level, sixteen second intermediary outputs from said second intermediary level, eight third intermediary outputs from said third intermediary level, four fourth intermediary outputs from said fourth intermediary level, and two fifth intermediary outputs from said fifth intermediary level.
 10. The logic block of claim 1, further combined in a Field-Programmable Gate Array integrated circuit with at least one of a Digital Signal Processing structure and a Look-Up Table structure.
 11. The logic block of claim 1, wherein said logic gate is a member of the group consisting of AND gates, OR gates, NAND gates and NOR gates.
 12. A programmable circuit, comprising: an input crossbar including an input crossbar input and an input crossbar output; and a logic block in communication with said input crossbar, said logic block including: a plurality of cells, each of said cells consisting of data inputs, a select input, a logic gate and a programmably selectable inverter coupled to said logic gate, each of said data inputs to said cell consisting only of an input to said logic gate, said logic gate including a logic gate output, said programmably selectable inverter coupled to said logic gate output and a multiplexer coupled to said inverter and said logic gate output, said select input coupled to said multiplexer, said multiplexer configured to output either said logic gate output or an output of said inverter in response to said select input, said cells forming a tree structure arrangement comprising a number of levels, a plurality of inputs to said tree structure in a first level of said tree structure comprising said data inputs to said cells in said first level, said logic block input in communication with said input crossbar output, and a logic block output from said tree structure in a last level of said tree structure.
 13. The programmable circuit of claim 12, further comprising a logic block crossbar having a logic block crossbar input and a logic block crossbar output, said logic block crossbar input in communication with said logic block output.
 14. The programmable circuit of claim 13, further comprising a multiplexer having a multiplexer input and a multiplexer output, said multiplexer input in communication with said logic block crossbar output.
 15. The programmable circuit of claim 14, further comprising a flip-flop having a flip-flop input and a flip-flop output, said flip-flop input in communication with said logic block crossbar output.
 16. The programmable circuit of claim 15, wherein said multiplexer input is in communication with said flip-flop output.
 17. The programmable circuit of claim 13, further comprising an output crossbar in communication with said multiplexer output.
 18. The programmable circuit of claim 12, further comprising a Look-Up Table (LUT) in communication with said input crossbar.
 19. The programmable circuit of claim 12, wherein: said tree structure includes said first level, said last level, and an intermediary level, and an intermediary output from said intermediary level.
 20. The logic block of claim 12, wherein said logic gate is a member of the group consisting of AND gates, OR gates, NAND gates and NOR gates.
 21. A programmable circuit, comprising: a first logic block including: a plurality of cells including a first group of said cells arranged in a first tree structure having a first intermediary level, each of said cells consisting of data inputs, a select input, a logic gate, and a programmable conditional inversion, each of said data inputs to said cell consisting only of an input to said logic gate, said logic gate including a logic gate output, said programmable conditional inversion comprising an inverter coupled to said logic gate output, and a multiplexer coupled to said inverter and said logic gate output, said multiplexer including a select input and configured to output either said logic gate output or an output of said inverter in response to said select input, first inputs to said first group of said cells, and first outputs from said first group of said cells, said first outputs including a first intermediary output from said first intermediary level; and a second logic block interconnected with the first logic block, said second logic block including: second group of said cells arranged in a second tree structure having a second intermediary level, second inputs to said second group of said cells, and second outputs from said second group of said cells, said second outputs including a second intermediary output from said second intermediary level.
 22. The logic block of claim 21, wherein said logic gate is a member of the group consisting of AND gates, OR gates, NAND gates and NOR gates. 